package PenTest.xiecheng.Acm2;

import java.util.Scanner;

import java.util.Scanner;
//
//// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static int countWorkSchedules(int n, int m, int[] a, int b) {
        // 初始化动态规划数组
        int[][][] dp = new int[n + 1][m + 1][b + 1];
        dp[0][0][0] = 1; // 0 个人工作 0 天且失误数量为 0 的方案数为 1

        // 动态规划求解
        for (int i = 1; i <= n; i++) {
            for (int j = 0; j <= m; j++) {
                for (int k = 0; k <= b; k++) {
                    for (int l = 0; l <= Math.min(j, m / n); l++) { // l 是第 i 个人工作的天数
                        if (k >= l * a[i - 1]) { // 确保失误数量不超过 b
                            dp[i][j][k] += dp[i - 1][j - l][k - l * a[i - 1]];
                        }
                    }
                }
            }
        }

        // 计算总方案数
        int totalSchedules = 0;
        for (int k = 0; k <= b; k++) {
            totalSchedules += dp[n][m][k];
        }

        return totalSchedules;
    }

    public static void main(String[] args) {
        int n = 3; // 3 个人
        int m = 5; // 总共工作 5 天
        int[] a = {1, 2, 3}; // 每个人每天的失误数量
        int b = 6; // 总共失误数量

        int result = countWorkSchedules(n, m, a, b);
        System.out.println("总共有 " + result + " 种方案");
    }
}